package trastienda.web;

import java.util.Collection;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import trastienda.excepcion.DAOExcepcion;
import trastienda.modelo.Categoria;
import trastienda.modelo.Usuario;
import trastienda.service.UsuarioService;

@Controller
public class UsuarioController {
	@Autowired
	private UsuarioService usuarioService;
	
	public void setUsuarioService(UsuarioService us){
		this.usuarioService = us;
	}
	 
	@RequestMapping(value = "/mantenimiento_usuario", method = RequestMethod.GET)
	protected ModelAndView mantenimiento(HttpServletRequest request, HttpServletResponse response) throws Exception {

		return new ModelAndView("mantenimiento_usuario");
	}
	
	@RequestMapping(value = "/nuevo_usuario", method = RequestMethod.GET)
	protected ModelAndView nuevo(HttpServletRequest request, HttpServletResponse response) throws Exception {

		return new ModelAndView("ingresar_usuario");
	}
	
	@RequestMapping(value = "/ingresarUsuario", method = RequestMethod.GET)
	protected ModelAndView ingresar_nuevo_usuario(HttpServletRequest request, HttpServletResponse response) throws Exception {
		Usuario vo = null;
		String id = request.getParameter("idUsuario");
		String nombre = request.getParameter("nombre");
		String pass = request.getParameter("password");
		String paterno = request.getParameter("paterno");
		String materno = request.getParameter("materno");
		String correo = request.getParameter("correo");
		String direccion = request.getParameter("direccion");
		String telefono = request.getParameter("telefono");
		String estado = request.getParameter("estado");

		System.out.println("id Usuario: "+id);
		System.out.println("nombre: "+nombre);
		 
		vo = new Usuario(id, pass, nombre, paterno, materno, correo, direccion, telefono, estado);
		
		usuarioService.insertar(vo);
		
		return new ModelAndView("mantenimiento_usuario");
	}
	
	@RequestMapping(value = "/edicion", method = RequestMethod.GET)
	protected ModelAndView edicion(HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		return new ModelAndView("buscar_usuario");
	}
	
	
	// metodo que produce error si no se encuentra el idUsuario
	@RequestMapping(value = "/buscarEnBD", method = RequestMethod.GET)
	protected ModelAndView buscar(HttpServletRequest request, HttpServletResponse response) throws Exception {
		String id = request.getParameter("idUsuario");
		System.out.println("id: "+id);
		Usuario vo = usuarioService.obtenerPorIdUsuario(id);
		if(vo != null){
			return new ModelAndView("editarUsuario", "USUARIOMOD", vo);
		}else{
			return new ModelAndView("aviso", "idUsuario", id);
		}
	}
	
	@RequestMapping(value = "/accion_editar", method = RequestMethod.GET)
	protected ModelAndView editar(HttpServletRequest request, HttpServletResponse response) throws Exception {
		Usuario vo = null;
		String id = request.getParameter("idUsuario");
		String nombre = request.getParameter("nombre");
		String pass = request.getParameter("clave");
		String paterno = request.getParameter("paterno");
		String materno = request.getParameter("materno");
		String correo = request.getParameter("correo");
		String direccion = request.getParameter("direccion");
		String telefono = request.getParameter("telefono");
		String estado = request.getParameter("estado");

		System.out.println("id Usuario: "+id);
		System.out.println("nombre: "+nombre);
		
		vo = new Usuario(id, pass, nombre, paterno, materno, correo, direccion, telefono, estado);
		usuarioService.actualizar(vo);
		return new ModelAndView("mantenimiento_usuario");
	}
	
	@RequestMapping(value = "/eliminacion", method = RequestMethod.GET)
	protected ModelAndView eliminacion(HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		return new ModelAndView("buscar_eliminarUser");
	}
	
	@RequestMapping(value = "/buscarParaEliminar", method = RequestMethod.GET)
	protected ModelAndView buscaParaEliniar(HttpServletRequest request, HttpServletResponse response) throws Exception {
		String id = request.getParameter("idUsuario");
		System.out.println("id: "+id);
		Usuario vo = usuarioService.obtenerPorIdUsuario(id);
		if(vo != null){
			return new ModelAndView("eliminar_usuario", "USUARIOMOD", vo);
		}else{
			return new ModelAndView("aviso", "idUsuario", id);
		}
		
	}
	 
	@RequestMapping(value = "/accion_eliminar", method = RequestMethod.GET)
	protected ModelAndView eliminar_user(HttpServletRequest request, HttpServletResponse response) throws Exception {

		Usuario vo = null;
		String id = request.getParameter("idUsuario");
		
		System.out.println("id Usuario: "+id);
		
		usuarioService.eliminar(id);
		return new ModelAndView("mantenimiento_usuario");
	}
}
